module.exports = function(grunt) {
    // 初始化 告诉grunt 要干啥
    grunt.initConfig({
        //合并
        concat: {
            options: {
                separator: ';', //多个js 用;拼接起来
            },
            dist: {
                src: ['src/js/*.js'],  //源文件目录 *所有的文件，也可以单独指定['src/intro.js', 'src/project.js', 'src/outro.js'],
                dest: 'build/js/build.js', //输出目录
            },
        },
        // 压缩
        pkg: grunt.file.readJSON('package.json'), //定义一个变量
        uglify: {
            //像 ejs语法 是为了给压缩后的文件 添加注释（不要也行）
            options: {
                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                '<%= grunt.template.today("yyyy-mm-dd") %> */'
            },
            //自己定义 目录文件夹,压缩 是 先合并再压缩，找合并后的文件
            build: {
                files: {
                    'build/js/build.min.js': [' build/js/build.js']
                }
            }
        },
        //js 语法检查
        jshint : {
            options: {
                jshintrc : '.jshintrc.json' //指定配置文件
            },
            build : ['Gruntfile.js', 'src/js/*.js'] //指定检查的文件
        },
        // css合并压缩
        cssmin: {
            options: {
                // 快速压缩 不建议
                mergeIntoShorthands: false,
                // 精确度
                roundingPrecision: -1
            },
            target: {
                files: {
                    'build/css/build.min.css': ['src/css/*css']
                }
            }
        },
        // 自动打包编译
        watch : {
            scripts : {
                // 监视的源文件
                files : ['src/js/*.js', 'src/css/*.css'],
                // 任务：就是咱们项目构建要进行的项目 就是监视源文件如果变化，就执行下面的任务
                tasks : ['concat', 'jshint', 'uglify', 'cssmin'],
                // spawn大量生产 变量更新：
                // true的话是 全量更新（我不管你变哪一个，任务全启动一遍）。
                // false是 只改了css 我们只启动css的任务
                options : {spawn : false}
            }
        }
    });
    //grunt插件 执行任务的时候要加载的插件
    // 合并任务插件
    grunt.loadNpmTasks('grunt-contrib-concat');
    // 压缩任务插件
    grunt.loadNpmTasks('grunt-contrib-uglify');
    //js语法检查
    grunt.loadNpmTasks('grunt-contrib-jshint');
    //css合并压缩
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    //自动打包编译
    grunt.loadNpmTasks('grunt-contrib-watch');
    //grunt 注册默认任务 ,数组  是指要依赖的任务 (项目完成的时候运行 grunt)
    grunt.registerTask('default', ['concat','uglify','jshint','cssmin']);
    grunt.registerTask('mywatch', ['default','watch']);
    //mywatch 注册默认任务 ,数组  是指要依赖的任务 (项目开发的时候运行 mywatch)
};